package com.sprucetec.live.service;

import com.sprucetec.live.common.dto.PagedListDTO;
import com.sprucetec.live.common.dto.business.LiveUserDto;
import com.sprucetec.live.common.dto.business.LiveVideoDto;
import com.sprucetec.live.common.dto.business.NettyMessageDto;
import com.sprucetec.live.entity.LiveChat;
import com.sprucetec.live.entity.LiveUser;
import com.sprucetec.live.entity.LiveVideo;

import java.util.List;
import java.util.Map;

/**
 * @author chenkai
 * @date 2020/3/31 4:16 下午
 * @description:
 */
public interface LiveVideoService {

    /**
     * 创建直播
     *
     * @param liveVideoDto
     */
    LiveVideo createLiveVideo(LiveVideoDto liveVideoDto);

    /**
     * 修改直播
     * @param liveVideoDto
     */
    LiveVideo updateLiveVideo(LiveVideoDto liveVideoDto);

    /**
     * 根据id，获取直播详情
     * @param id
     * @return
     */
    LiveVideoDto getLiveVideoDto(Long id);


    PagedListDTO<LiveVideoDto> getLiveVidePage(LiveVideoDto liveVideoDto);

    LiveVideoDto setVideo(LiveVideoDto liveVideoDto) throws Exception;

    // 导出在线用户数
    List<LiveUserDto> getOnlineUserByLiveNo(LiveVideo liveVideo);


    Integer getRemainsCountByVideo(LiveChat liveChat);

    Integer clearChannel(NettyMessageDto nettyMessageDto);
    /************************************************************ PC 端相关接口 START ************************************************************/
    LiveVideoDto getVideoDetail(String liveNo, String ip, String city);

    void videoDetailData(LiveVideoDto liveVideoDto);

    Map getIndexVideo(LiveUser liveUser);

    List<LiveVideoDto> videoSearch(LiveVideoDto liveUser) throws InterruptedException;

    List<LiveVideoDto> getNewLastedVideos(boolean isDetail);


    /************************************************************ PC 端相关接口 END ************************************************************/
}
